cmake_minimum_required(VERSION 3.18)

#在最顶层的cmake中必须有直接的project调用，
#如果没有会发生警告，cmake会启用默认gcc和g++，默认的项目名称为project
project(hello_world
        VERSION 1.2.3 #设置cmake版本
        LANGUAGES C CXX #设置编程语言(默认是C 和 C++)
)

add_executable(main main.cpp)

include(CTest)#ctest or make test，名字就是testAdd
add_test(
        NAME testAdd
        COMMAND main#测试源代码对应的可执行程序
)
#测试信息可以手动运行，也可以在我们的构建目录使用ctest或者make test查看，
#其中错误信息会被存放在Testing的一个叫做LastTest.log的文件中
#（也可以直接按住ctrl再点击进入相应错误信息文件

#安装二进制程序到本地 sudo cmake --install . 
#sudo make install
#安装以后默认就在机器的公共目录下/usr/local/bin
#安装以后cmake会产生一个install_manifest.txt
include(GNUInstallDirs)
install(TARGETS main)

include(CPack)
#CPack和cmake --install .都是执行的cmake_install.cmake
#但是后者目的地是/usr/local/bin，前者目的地是临时目录，_CPack_Packages
#前者整理这个临时目录的文件列表随后将这些文件压缩

#源内构建与源外构建相比更加推荐源外构建
#cmake -S ./（源文件目录） -B ../指定构建目录(含有CMakeLists的是构建目录的根目录)

#最初源文件的目录就是顶级构建目录

#equal to printf类似于shell，使用${}来展开相关变量
message(STATUS "PROJECT_NAME : ${PROJECT_NAME}") #打印项目名称
message(STATUS "PROJECT_VERSION : ${PROJECT_VERSION}") #打印全部版本信息
message(STATUS "PROJECT_VERSION_MAJOR : ${PROJECT_VERSION_MAJOR}") #打印主版本号